
// export default request
// 引入axios
import axios from 'axios'
// 引入vuex
import store from '@/store/index.js'
import { Message } from 'element-ui'
import router from '@/store/index.js'

// 利用create创建请求实例
const request = axios.create({
  baseURL: process.env.VUE_APP_BASE_API
})

// 请求拦截器
request.interceptors.request.use(config => {
  // 统一添加请求头中的token
  // console.log(config)
  config.headers.Authorization = `Bearer ${store.state.user.token}`
  return config
})

// 相应拦截器
request.interceptors.response.use(response => {
  // 1.返回数据解析
  // console.log(response)
  const { data: { success, message, data }} = response
  if (!success) {
    // 2.请求出错处理
    // 提示错误
    Message.error(message)
    // 让业务进入catch
    return Promise.reject(new Error(message))
  } else {
    return data
  }
}, error => {
  // 请求失败处理(状态码不为200执行这个回调)
  if (error && error.response && error.response.status === 401) {
    // 退出操作,重新登录
    store.dispatch('user/logout')
    router.push('/login')
  }
  Message.error(error.message) // 提示错误信息
  return Promise.reject(error) // 返回执行错误 让当前的执行链跳出成功 直接进入 catch
})

// 导出
export default request
